#pragma once
#include <unistd.h>
#include<cstdlib>
#include<signal.h>
#include<string>
   #include <sys/types.h>
       #include <sys/stat.h>
       #include <fcntl.h>

std:: string nullfile="/dev/null";
void Deamon(const std::string& cwd="")
{
       //1.忽略其他异常信号
    signal(SIGSTOP,SIG_IGN);
    signal(SIGPIPE,SIG_IGN);
    signal(SIGCLD,SIG_IGN);
 
 //2.自成会话
    if(fork()>0)exit(0);
    setsid();

    //3.更改调用进程的工作目录
    if(cwd.c_str()!="")
    {
        chdir(cwd.c_str());
    }

    //4.关闭标准输入输出错误流
    //打开垃圾桶
    int fd=open(nullfile.c_str(),O_RDONLY);//只读方式打开
    if(fd>0)
    {
    //重定向到垃圾桶
    dup2(fd,0);
    dup2(fd,1);
    dup2(fd,2);
    }

}
